package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.CheckGroup;
import com.itheima.pojo.Setmeal;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @author wgq
 * @date 2019-10-11 11:15
 * 套餐持久层
 */
@Repository
public interface SetmealDao {
    /**
     * 分页查询套餐列表,模糊查询
     * @param queryString
     * @return
     */
    Page<Setmeal> findByCondition(String queryString);

    /**
     * 根据编码 code 查看 该条编辑过的数据，数据库中是否已存在
     * @param code
     * @return
     */
    Integer findSetMealByCode(String code);

    /**
     * 根据名称 name 查看 该条编辑过的数据，数据库中是否已存在
     * @param name
     * @return
     */
    Integer findSetMealByName(String name);

    /**
     * 设置  套餐和检查组的关联关系，设置中间表
     * @param setMealId
     * @param checkgroupId
     */
    void setSetMealAndCheckGroup(@Param("setMealId") Integer setMealId, @Param("checkgroupId") Integer checkgroupId);

    /**
     * 新增套餐选项 ，判断新增套餐是否已经存在 和 关联检查组的提交.....
     * @param setmeal
     */
    void addSetMeal(Setmeal setmeal);

    /**
     * 删除套餐服务
     * @param id
     */
    void deleteSetMeal(Integer id);

    /**
     * 删除套餐服务  和 检查组之间的关联关系
     * @param id
     */
    void deleteCheckGroupIds(Integer id);

    /**
     *  编辑套餐数据，根据行ID来查询套餐数据进行回显
     * @param id
     * @return
     */
    Setmeal findById(Integer id);

    /**
     * 根据当前行套餐ID，查询出关联的检查组ID列表，并进行回显
     * @param id
     * @return
     */
    List<Integer> findGroupIdsBySetMealId(Integer id);

    /**
     * 编辑套餐数据
     * @param setmeal
     */
    void editSetMeal(Setmeal setmeal);

    /**
     * 编辑修改后，判断套餐组名称是否已存在
     * @param setmeal
     * @return
     */
    Integer findSetMealName(Setmeal setmeal);

    /**
     * 移动端，获取所有的套餐数据，用于回显
     * @return
     */
    List<Setmeal> findAllSetmeal();
    /**
     * 移动端， 根据套餐 ID 获取某一条套餐数据，用于移动端预约回显
     * @param id
     * @return
     */
    Setmeal findSetMealById(Integer id);

    /**
     * 查询套餐名称和预约套餐的人数
     *                [
     *                 {"name":"套餐1","value":10},
     *                 {"name":"套餐2","value":30},
     *                 {"name":"套餐3","value":25}
     *                ]
     * @return
     */
    List<Map<String, Object>> findSetmealCount();
}
